Lịch sử C++ C++

Stroustrup đã bắt đầu làm việc với khái niệm lớp trong 1979. Ý tưởng tạo ra một ngôn ngữ mới bắt nguồn từ kinh nghiệm lập trình khi mà ông viết luận án tiến sĩ. Stroustrup nhận ra rằng Simula có nhiều tính năng hữu dụng cho việc phát triển một phần mềm lớn nhưng nó đã quá chậm trong ứng dụng thực tế, trong khi đó, BCPL lại nhanh nhưng ở cấp quá thấp và không tiện cho việc phát triển phần mềm lớn. Đến khi làm việc ở Bell Labs, thì ông gặp phải vấn đề trong việc phân tích nhân Unix với việc tính toán phân tán. Dùng lại kinh nghiệm lúc làm luận án tiến sĩ, Stroustrup cài thêm các tính năng giống như Simula vào trong C để nâng cao. C được chọn là vì đó là ngôn ngữ tổng quát, nhanh và năng động. Lần đầu tiên, các chức năng như là lớp, lớp dẫn xuất, kiểm tra kiểu mạnh, nội tuyến (inline), và đối số mặc định đã được thêm vào trong C. Lần xuất bản đầu tiên vào thị trường xảy ra trong tháng 11/1985.

Năm 1983, thì tên C với các lớp được đổi thành C++. các chức năng mới được thêm vào bao gồm hàm ảo, quá tải hàm và toán tử, tham chiếu, hằng, khả năng kiểm soát bộ nhớ của lưu trữ tự do, nâng cao việc kiểm soát kiểu, và lệnh chú giải kiểu (//).

Năm 1985, tác phẩm The C++ Programming Language được xuất bản lần đầu tiên, cung cấp một tài liệu tham khảo quan trọng cho ngôn ngữ nhưng đó chưa là một tiêu chuẩn chính thức.

Năm 1989 phiên bản C++ 2.0 phát hành. Các tính năng mới bao gồm đa kế thừa, lớp trừu tượng, hàm tĩnh, hàm thành viên hằng, và thành viên bảo tồn.

Năm 1990, cuốn The Annotated C++ Reference Manual được xuất bản cung cấp nền tảng cho tiêu chuẩn tương lai.

Phiên bản xuất bản sau đó có thêm các chức năng tiêu bản, ngoại lệ, không gian tên, chuyển kiểu cho toán tử new, và kiểu Boolean.

Khi C++ hình thành, thì thư viện chuẩn hoàn thiện với nó. Thư viện C++ đầu tiên thêm vào là iostream.h cung cấp cơ sở để thay thế các hàm C truyền thống như là printfscanf. Sàu này, trong những thư viện chuẩn quan trọng nhất được thêm vào là Thư viện Tiêu bản Chuẩn.

Sau nhiều năm làm việc, có sự cộng tác giữa ANSI và hội đồng tiêu chuẩn hoá C++ của ISO để soạn thảo tiêu chuẩn ISO/IEC 14882:1998. Phiên bản tiêu chuẩn này được phát hành năm 1989, hội đồng tiếp tục xử lý các báo cáo trục trặc, và ấn hành một phiên bản sửa sai của chuẩn C++ trong năm 2003.

Không ai là chủ nhân của ngôn ngữ C++, nó hoàn toàn miễn phí khi dùng. Mặc dù vậy, các văn bản tiêu chuẩn thì không miễn phí.

Sự phát triển trong tương lai

C++ tiếp tục phát triển để thỏa mãn các nhu cầu tương lai. Đặc biệt nhóm Boost.org, làm việc trên hầu hết các dạng và các khuyến cáo trong C++ cho Hội đồng Tiêu chuẩn C++ về các chức năng hoạt động tốt và các chức năng cần được cải thiện. Công việc hiện tại cho thấy bản năng đa mẫu hình của C++ sẽ ngày càng nhiều. Ví dụ: Công việc của Boost.org mở rộng rất mạnh chức năng của C++ và khả năng siêu lập trình (metaprogramming) của nó. Chuẩn C++ không đề cập về sự thiết lập của mã hóa tên (name decoration), xử lý ngoại lệ và sự thiết lập các tính năng đặc biệt khác, tạo mã đối tượng mà nó được làm ra từ những trình dịch không tương thích khác. Dù vậy, vẫn có những tiêu chuẩn khác từ các nhà sản xuất dùng cho những máy hay OS riêng biệt nhằm tiêu chuẩn hóa các trình dịch trên các nền tảng đó, Ví dụ .

Các trình dịch cho đến gần đây (2004) vẫn lưỡng lự khi hỗ trợ toàn bộ chuẩn C++, đặc biệt là trong những lãnh vực của tiêu bản (đây là phần ngôn ngữ đã được công nhận hoàn toàn từ hội đồng tiêu chuẩn. Một điểm các biệt đáng nói nữa là từ khóa export, nhằm cho phép các định nghĩa của các tiêu bản được tách rời khỏi các khai báo của chúng. Trình dịch đầu tiên thiết kế kiểu này là Comeau C++, đầu năm 2003 (5 năm sau khi tiêu chuẩn đã được phát hành!); trong năm 2004, phiên bản beta trình dịch của Borland C++ Builder X cũng hỗ trợ dùng export. Cả hai trình dịch đó dựa trên mặt ngoài của EDG C++. Cũng cần lưu ý rằng nhiều sách cung cấp mã Ví dụ cho việc thiết lập từ khóa export (Ivor Horton's Beginning ANSI C++, pg. 827) mà lại không dịch được, nhưng lại cũng không có tham khảo vấn dề này với việc (khó khăn) đã nêu trên. Những trình dịch khác như là Microsoft Visual C++GCC thì hoàn toàn không hỗ trợ nó. Herb Sutter, thư ký hội đồng tiêu chuẩn C++, có khuyến cáo rằng export sẽ được hủy bỏ trong các phiên bản tương lai của chuẩn C++ . Nhưng quyết định tối hậu đã được đưa ra là giữ nguyên nó trong chuẩn C++.

Nhiều vấn đề về tiêu bản bao gồm các xây dựng như đặc biệt hóa tiêu bản từng phần, mà đã được hỗ trợ một cách nghèo nàn trong nhiều năm sau khi chuẩn C++ đã ra đời.

Lịch sử của tên "C++"

Tên C++ được đặt ra bởi Rick Mascitti (giữa 1983) và lần đầu tiên được dùng trong tháng 12 1983. Trước đó, trong suốt thời kì nghiên cứu, khi ngôn ngữ phát triển đã được đề cập như là "C với các lớp". Toán tử ++ được nối vào với tên "C" (có nghĩa là tăng giá trị của C lên 1 đơn vị) được dùng theo cách đặt tên thông thường của việc dùng dấu + với ý nghĩa "nâng cao". Ví dụ: "Wikipedia+". Sau này phiên bản ngôn ngữ lập trình cao hơn dựa trên nền tảng của C và C++ được gọi là C#, tương ứng với 4 dấu +. Theo Stroustrup thì:

Cái tên C++ nhấn mạnh sự tiến hóa tự nhiên của các thay đổi từ C. C+ là tên của một ngôn ngữ lập trình cũ và không liên quan gì đến C hay C++.